Software applications are widely used to perform a variety of functions on computer systems. Software applications typically allow users to interact with the application using a graphical user interface (GUI). Most GUIs include different visual elements that facilitate interaction with the software application. These visual elements are often labeled to indicate the element's function in relation to the software application. Such visual elements may include buttons, scroll bars, menus, graphical objects and other means of facilitating user interaction.
Interactive GUI elements typically have multiple states. These states may include enabled, disabled, pressed or not pressed, unchecked or indeterminate. A check box, for example, may appear empty when unchecked and with a checkmark glyph when checked. Some GUIs may allow the visual elements to appear differently based on the elements' current state. For example, a button may be colored blue when pressed and white when not pressed. Many other states and possible state changes are possible. Furthermore, the GUI may allow for various transitions between states. In some cases, a user may be able to specify properties of the transition such as how long it should last, or how the visual element should appear before and after the transition.
GUIs may also allow for animations during transitions between states. Animations are a series of graphical representations that typically start at current state of a visual element (e.g. “pressed”), and animate a series of changes that take the visual element to a new state (e.g. “not pressed”). Such transition animations are typically hard-coded for each state change, and are usually specific to the type of transition being used. Furthermore, transition animations are typically rewritten each time a change is made to the visual element's state properties.